package com.lotus.lqmp.service.service;

import com.lotus.lqmp.service.controller.vo.req.ReviewPlanQueryReq;
import com.lotus.lqmp.service.dao.entity.ReviewPlanDo;
import com.lotus.lqmp.service.domain.ReviewPlanDeletedQueryDomain;
import com.lotus.lqmp.service.domain.ReviewPlanQueryDomain;
import com.lotus.platform.common.biz.Biz;

import java.util.List;

/**
 * 评审计划表Service接口
 *
 * @author Shiheng.Liu1
 * @date 2022-03-29
 */
public interface ReviewPlanService extends Biz<ReviewPlanDo>{

    /**
     * 查询模板计划当页数据
     * @param queryInfo
     * @param start
     * @param pageSize
     * @return
     */
    List<ReviewPlanQueryDomain> listForReviewPlanPage(ReviewPlanQueryReq queryInfo, long start, long pageSize);

    /**
     * 查询未分页模板总数
     * @param queryInfo
     * @return
     */
    Long countForReviewPlanPage(ReviewPlanQueryReq queryInfo);

    /**
     * 获取指定评审计划中不在进行评审得总数
     * @param ids
     * @param status
     * @return
     */
    Long countNotGoingPlan(List<Long> ids, Integer status);

    /**
     * 批量逻辑删除评审计划
     * @param ids
     */
    void logicBatchDelete(List<Long> ids);

    /**
     * 删除得分页查询
     * @param queryInfo
     * @param start
     * @param pageSize
     * @return
     */
    List<ReviewPlanDeletedQueryDomain> listForDeletedReviewPlanPage(ReviewPlanQueryReq queryInfo, long start, long pageSize);

    /**
     * 删除得总数统计
     * @param queryInfo
     * @return
     */
    Long countForDeletedReviewPlanPage(ReviewPlanQueryReq queryInfo);

    /**
     * 查询未删除的评审计划
     * @param ids
     * @return
     */
    List<ReviewPlanDo> getNotDeletedPlans(List<Long> ids);

    /**
     * 获取指定范围内删除的评审计划
     * @param ids
     * @return
     */
    List<ReviewPlanDo> getDeletedPlans(List<Long> ids);

    /**
     * 批量还原评审计划
     * @param ids
     */
    void batchRestorePlan(List<Long> ids);

    /**
     * 删除的评审计划全部清空
     */
    void clearAll();

    /**
     * ecu清单id查询对应评审计划
     * @param ecuInventoryId
     * @return
     */
    ReviewPlanDo getNotDeletedByEcuInventoryId(Long ecuInventoryId);

    /**
     *  ecu清单ids查询对应评审计划
     * @param ecuInventoryIds
     * @return
     */
    List<ReviewPlanDo> getNotDeletedByEcuInventoryIds(List<Long> ecuInventoryIds);

    /**
     * 查询今天创建的计划数量
     * @return
     */
    long getTodayCreatedNum();
}
